SUPPORT / SAMPLES & SAS NOTES
 

Support

Problem Note 44972: An error occurred saving the price rules. Some rules have been saved.

DetailsAboutRate It

While editing pricing rules in SAS® High-Performance Markdown Optimization, a Pricing Rules error window might pop up containing the following message:

An error occurred saving the price rules.  Some rules have been saved.

null

This message typically occurs when you attempt to save too many price ranges with custom (non-default) price endings. The root cause is that the length of the string required to save the data is longer than the length of the database field used to store the data.

You will also find the following Java stack trace in the mid-tier log when this error occurs, indicating a database error (ORA-12899: value too large for column):

2011-11-29 13:48:24,396 [http-0.0.0.0-8080-3-1571] ERROR []
org.hibernate.event.def.AbstractFlushingEventListener - Could not synchronize
database state with session
org.hibernate.exception.GenericJDBCException: Could not execute JDBC batch
update
	at
org.hibernate.exception.SQLStateConverter.handledNonSpecificException(SQLStateCo
nverter.java:103)
	at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:91)
	at
org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)
	at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:253)
	at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:266)
	at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:168)
	at
org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(Abstract
FlushingEventListener.java:298)
	at
org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListe
ner.java:27)
	at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1000)
	at
com.sas.solutions.di.server.db.PersistenceManager.endHiberateTxn(PersistenceMana
ger.java:687)
	at
com.sas.solutions.di.server.db.PersistenceManager.commit(PersistenceManager.java
:608)
	at
com.sas.solutions.di.server.util.Interceptors.privateInvoke(Interceptors.java:16
1)
	at
com.sas.solutions.di.server.spring.SpringServer.invoke(SpringServer.java:173)
	at
com.sas.solutions.di.server.spring.SessionRemoteInvocationExecutor.invoke(Sessio
nRemoteInvocationExecutor.java:47)
	at
org.springframework.remoting.support.RemoteInvocationBasedExporter.invoke(Remote
InvocationBasedExporter.java:78)
	at
org.springframework.remoting.support.RemoteInvocationBasedExporter.invokeAndCrea
teResult(RemoteInvocationBasedExporter.java:114)
	at
org.springframework.remoting.httpinvoker.HttpInvokerServiceExporter.handleReques
t(HttpInvokerServiceExporter.java:74)
	at
org.springframework.web.servlet.mvc.HttpRequestHandlerAdapter.handle(HttpRequest
HandlerAdapter.java:49)
	at
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.j
ava:875)
	at
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.ja
va:809)
	at
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet
.java:571)
	at
org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:51
1)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
	at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilt
erChain.java:290)
	at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.
java:206)
	at
org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:9
6)
	at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilt
erChain.java:235)
	at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.
java:206)
	at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:2
30)
	at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:1
75)
	at
org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociatio
nValve.java:182)
	at
org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:84)
	at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
	at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
	at
org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionVa
lve.java:157)
	at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109
)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:262)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
	at
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Pr
otocol.java:583)
	at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:446)
	at java.lang.Thread.run(Thread.java:619)
Caused by: java.sql.BatchUpdateException: ORA-12899: value too large for column
"DI_DM"."PRICE_GRID"."PRICE_ENDING_SUMMARY_LIST" (actual: 625, maximum: 500)

	at
oracle.jdbc.driver.OraclePreparedStatement.executeBatch(OraclePreparedStatement.
java:10070)
	at
oracle.jdbc.driver.OracleStatementWrapper.executeBatch(OracleStatementWrapper.ja
va:213)
	at
org.apache.commons.dbcp.DelegatingStatement.executeBatch(DelegatingStatement.jav
a:294)
	at org.hibernate.jdbc.BatchingBatcher.doExecuteBatch(BatchingBatcher.java:48)
	at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:246)
	... 38 more

There is no workaround for this issue other than to limit the number of price ranges or limit the customization of price endings within a range (i.e. leave the 'any' boxes checked since it takes less storage space to store the default price endings).



Operating System and Release Information

Product FamilyProductSystemProduct ReleaseSAS Release
ReportedFixed*ReportedFixed*
SAS SystemSAS High-Performance Markdown OptimizationLinux for x644.3_M15.29.2 TS2M39.3 TS1M0
* For software releases that are not yet generally available, the Fixed Release is the software release in which the problem is planned to be fixed.